#ifndef CONSTANTE_H
#define CONSTANTE_H

#include <string>

class Constante{
protected:
        int type;
public:
        enum types {INTEGER,RATIONNAL,REAL,COMPLEX,EXPRESSION };
        Constante(int type);
        virtual Constante* operator+(const Constante&)const = 0;
        virtual Constante* operator*(const Constante&)const = 0;
        virtual Constante* operator-(const Constante&)const = 0;
        virtual Constante* operator/(const Constante&)const = 0;
        virtual Constante* operator-()const = 0;
        //virtual Constante* operator-(int)const = 0;

        //virtual Constante* sqr()const = 0;
        //virtual Constante* cube()const = 0;
        //virtual Constante* eval()const = 0;

        virtual std::string print()const = 0;
        int getType()const {return type;};
};

#endif // CONSTANTE_H
